Subject: RE: HALT_DL_NOACK usage

From: Paul Brittain <[email-masked]>
Date: Wed, 26 Oct 94 09:25:00 BST

Steve

I'm sorry I did not make myself clear.

The Target DLSw can discard it's circuit control block when the DLC_ERROR 
occurs.  If the origin returns a REACH_ACK, the target no longer knows of 
the target circuit ID it contains and hence can immediately format up a 
HALT_DL_NOACK to return to the origin DLSw specifying the origin circuit ID 
from the REACH_ACK.  This is effectively handling the tidy-up from the 
disconnected state (but is probably easiest done outside the FSM).

The only requirement for this to work well is that circuit IDs should not be 
immediately reused.

If you still don't like this idea, we need a new state, say HALT_ON_ACK, 
which waits for the REACH_ACK, sends the HALT_DL then moves to the 
DISCONNECT_PENDING state.  This, too, is not difficult but does not 
invalidate the unknown circuit ID handling above, which would still give an 
early way to tidy-up mismatches.

Paul Brittain
Data Connection.
 ----------
>From: Steve Klein (254-5623)
>To: aiw-dlsw-connect
>Subject: RE: Last of the Connect RIGlet changes
>Date: Monday, October 24, 1994 9:58PM
>
>Return-Path: <[email-masked]>
>Received: from datcon.co.uk by postoffice.datcon.co.uk id
>    <[email-masked]>; Tue, 25 Oct 94 02:22:23 BST
>Received: from networking.cary.ibm.com by datcon.co.uk (4.1/SMI-4.1) id
>    AA24823; Tue, 25 Oct 94 02:27:23 GMT
>Received: from vnet.ibm.com by networking.cary.ibm.com (AIX 3.2/UCB 
5.64/4.03)
>    id AA09847; Mon, 24 Oct 1994 22:10:02 -0400
>Message-Id: <[email-masked]>
>Received: from RALVM29 by VNET.IBM.COM (IBM VM SMTP V2R2) with BSMTP id 
3798;
>    Mon, 24 Oct 94 22:16:56 EDT
>Date: Mon, 24 Oct 94 21:58:45 EDT
>From: "Steve Klein (254-5623)" <[email-masked]>
>To: [email-masked]
>Subject: RE: Last of the Connect RIGlet changes
>---------------------------------------------------------------------------  
 ---
>Reference: Note from Paul Brittain dated Mon, 24 Oct 94 20:25:00 BST
>
>Paul, Remi, the problem I see with sending the HALT_DL with an
>unknown circuit ID is that the origin side of the circuit will
>still remain in CIRCUIT_ESTABLISHED state even though a HALT_DL_NOACK
>is sent (since the HALT_DL cannot be associated with the circuit).
>
>There is already a substate (Connected) to represent the receipt of
>a SABME while in CIRCUIT_PENDING state (to account for the fact that
>we don't have a circuit ID for a CONTACT yet).  We could create a
>substate (like Disconnected) to keep track of the fact that we need
>to send a HALT_DL when we get the origin circuit ID in the REACH_ACK.
>We may want to come up with some different substate names that do not
>conflict with names of circuit states.
>
>Steve
>
>>Alan, Steve, Remi et al,
>>
>>My recollection of this point was that we said it was sufficient to assume
>>general case handling of an unknown circuit ID in the form of an immediate
>>HALT_DL_NOACK response.
>>
>>The may not be as intellectually pure as Remi's suggestion, or Steve's
>>modification of it to include a new state, but you will probably need this
>>code anyway.  Why implement a separate mechanism for each case we 
identify?
>>
>>If this feels too unclean, I can see no other issue with Remi's proposal,
>>but I will still be implementing the HALT_DL_NOACK code as well to catch 
any
>>other unexpected error cases.
>>
>>Paul Brittain
>>Data Connection
>

---

From: "Steve Klein (254-5623)" <[email-masked]>
Date: Wed, 26 Oct 94 09:30:07 EDT

Reference: Note from Paul Brittain dated Wed, 26 Oct 94 09:25:00 BST

>The only requirement for this to work well is that circuit IDs should not be

Paul, I missed this point.  This solution works for the CIRCUIT_PENDING
case as well as other that may come up in the future.

Everyone, please check the following proposed change to make sure it
clearly states what needs to be done when receiving a invalid Remote
Circuit ID.

Steve

=-=-=-=-=-=-=-=-=-=-=-=  Proposed changes  =-=-=-=-=-=-=-=-=-=-=-=-=-=-=

3.3 Correlators
        .
        .      (end of section 3.3)
        .

   However the Target DLSw must not assume that the CANUREACH_cs will
   specify any of the Target Data Link Correlator or Target Port ID that
   were exchanged on the explorer frames.  <=== frames --> messages

>> Received SSP messages that require a valid Remote Circuit ID but
>> cannot be associated with an existing circuit should be rejected
>> with a HALT_DL_NOACK message.  This is done to prevent a situation
>> where one DLSw partner has a circuit defined while the other partner
>> does not.  The exception would be a HALT_DL_NOACK message with an
>> invalid Remote Circuit ID.  The HALT_DL_NOACK message is typically
>> used in error situations where a response is not appropriate.
>>
>> The SSP messages requiring a valid Remote Circuit ID are all expect
>> the following: CANUREACH_ex, CANUREACH_cs, ICANREACH_ex, ICANREACH_cs,
>> NETBIOS_NQ_cs, NETBIOS_NR_cs, DATAFRAME, NETBIOS_ANQ, NETBIOS_ANR,
>> <<< whatever we called x'1D'>>, and CAP_EXCHANGE.
>>
3.4. Largest Frame Size Field

   The Largest Frame Size (LF Size) field in the SSP Control Header is used
   to carry the LF Size bits across the DLSw connection.  This should be
   used to ensure that the two end-stations always negotiate a frame size
   to be used on a circuit that does not require the Origin and Target DLSw
   partners to re-segment frames.
        .
        .
        .

   5.2.4. CIRCUIT_PENDING State

   +----------------------+---------------------+----------------------+
   |        Event         |      Action(s)      |      Next State      |
   +----------------------+---------------------+----------------------+
        .
        .
        .
Change:
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            | Send HALT_DL        | DISCONNNECT_PENDING  |
   +----------------------+---------------------+----------------------+

To:
   +----------------------+---------------------+----------------------+
   | DLC_ERROR            |                     | DISCONNECTED         |
   +----------------------+---------------------+----------------------+